package cn.demoncat.util.lang.entity;

import java.util.HashMap;
import java.util.Map;

/**
 * HashMap<String,V>
 *
 * @author 延晓磊
 * @since 2023年04月06日
 */
public class MapSv<V> extends HashMap<String, V> {

    /**
     * 获取，不存在时put
     *
     * @param key
     * @param defaultValue
     * @return
     */
    public V get(String key, V defaultValue){
        V v = this.get(key);
        if (v == null) {
            this.put(key, defaultValue);
            return defaultValue;
        }
        return v;
    }

    /**
     * 添加
     *
     * @param key
     * @param value
     * @return
     *
     * @author 延晓磊
     *
     * @since 2020年2月17日
     */
    public MapSv<V> add(String key, V value) {
        this.put(key, value);
        return this;
    }

    /**
     * 添加
     *
     * @param put   是否添加
     * @param key
     * @param value
     * @return
     *
     * @author 延晓磊
     *
     * @since 2020年2月17日
     */
    public MapSv<V> or(boolean put, String key, V value) {
        if (put) {
            this.put(key, value);
        }
        return this;
    }

    /**
     * 添加
     *
     * @param map
     * @return
     *
     * @author 延晓磊
     *
     * @since 2020年2月17日
     */
    public MapSv<V> addAll(Map<String,V> map) {
        this.putAll(map);
        return this;
    }
}
